package com.cz.crazycrp.component;

import com.cz.crazycrp.R;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

public class picBar extends View{          
	 
    int COMPONENT_WIDTH;//控件的宽度  
    int COMPONENT_HEIGHT;//控件的高度  
    boolean initflag = false;//是否已经初始化图片  
    Bitmap[] bmp;//用来存放图片的数组  
    int currIndex = 0;//当前播放图片的ID  
    int[] bitmapId;//图片编号ID  
    boolean workFlag = true;//播放图片的线程标识位  

    public picBar(Context context) {
            super(context);
             
            //首先，要播放图片，就先要有图片，那就先给各个图片编号吧,这里的图片资源存放在了res下的drawable文件夹下了  
            bitmapId =new int[]{R.drawable.d1, R.drawable.d2, R.drawable.d3}; 
             
            //好了，图片的编号现在已经搞定了，接下来该干什么呢？对，应该将资源里的图片塞进Bitmap数组了，那么我们先来确定将要播放的图片的数量，即Bitmap数组的长度
            bmp = new Bitmap[bitmapId.length];//这里不要直接将数值赋给bmp，因为我们可能会不定期地更换图片资源，这样我们就要修改多处代码，而我们这样根据  

            //图片的ID来确定图片的数量，以减少不必要的麻烦，下面开始初始化图片，我们将初始化图片放在一个函数里  
            initBitmap();//图片初始化完毕  

            //图片初始化完毕了，接下来我们要做的就是播放图片了，但是播放图片之前，我们有一个问题，就是怎样让图片实现循环播放？这里我们另开一个新的线程来定时更改  

            //要播放的图片的ID，以实现图片的循环播放，要实现循环播放图片的功能，我们需要覆写onDraw函数，首先，我们来新开一个线程  

            new Thread(){  

                    //重写run方法  
                    public void run(){
                            // TODO Auto-generated method stub  
                            while(workFlag)//一直执行这个循环(死循环)  
                            {  
                                    currIndex = (currIndex+1)%bitmapId.length;//更改图片的ID  
                                    picBar.this.postInvalidate();//刷新屏幕，导致屏幕重绘  
                                    try
                                    {  
                                            Thread.sleep(300);//到此处暂停3秒钟,然后继续执行run函数,即实现每隔3秒钟刷新屏幕一次  
                                    } 
                                    catch (InterruptedException e)   
                                    {  
                                            // TODO Auto-generated catch block  
                                            e.printStackTrace();  
                                    } 
                            } 
                    } 
            }.start(); 
    }

    //初始化图片  

    public void initBitmap()  

    {  

            //获取资源图片  

            Resources res = this.getResources();  

            for(int i=0;i<bitmapId.length;i++){  
            	bmp[i] = BitmapFactory.decodeResource(res, bitmapId[i]);  
            } 
    } 

    //覆写onDraw方法  
    @Override
    protected void onDraw(Canvas canvas)   
    {  
            // TODO Auto-generated method stub  
            super.onDraw(canvas);  
            if(!initflag)//检查是偶已经获取控件的宽和高，如果没有，那么就获取控件的宽和高  
            {  
                    COMPONENT_WIDTH = this.getWidth();  
                    COMPONENT_HEIGHT = this.getHeight();  
                    initflag = true;  
            } 
            Paint p = new Paint();
            canvas.drawBitmap(bmp[currIndex], 100, 100, p);//绘制图片  
    } 

} 
